package plp.imperative2.expression;

import plp.expressions1.util.Tipo;
import plp.expressions1.util.TipoPrimitivo;
import plp.expressions2.expression.ValorConcreto;
import plp.expressions2.memory.AmbienteCompilacao;

public class ValorDuracao extends ValorConcreto<Duracao> {

	public ValorDuracao(Duracao valor) {
		super(valor);
	}

	public Tipo getTipo(AmbienteCompilacao amb) {
		return TipoPrimitivo.DURACAO;
	}

	@Override
	public ValorConcreto<Duracao> clone() {
		return new ValorDuracao(this.valor());
	}

	@Override
	public boolean isGreaterThan(ValorConcreto<Duracao> obj) {
		return (valor().getMilisegundos() > obj.valor().getMilisegundos());
	}

	@Override
	public boolean isLessThan(ValorConcreto<Duracao> obj) {
		return (valor().getMilisegundos() < obj.valor().getMilisegundos());
	}

	@Override
	public boolean isGreaterThanOrEqual(ValorConcreto<Duracao> obj) {
		return (valor().getMilisegundos() >= obj.valor().getMilisegundos());
	}

	@Override
	public boolean isLessThanOrEqual(ValorConcreto<Duracao> obj) {
		return (valor().getMilisegundos() <= obj.valor().getMilisegundos());
	}

}
